#ifndef SUBSTITUTIONDISPATCHERBASE_H
#define SUBSTITUTIONDISPATCHERBASE_H

#include "ITransHandler.h"
#include "Log.h"

class SubstitutionDispatcherBase abstract:public ITransHandler
{
public:
	SubstitutionDispatcherBase():ITransHandler(){}

	~SubstitutionDispatcherBase(){}

	virtual ExecuteResultCode Execute(ClientContext&,OVERLAPPED*);

protected:
	virtual ExecuteResultCode PreExecute(ClientContext&,OVERLAPPED*,DWORD*) abstract;

	virtual ITransHandler* HitFailedHandler() abstract;

	virtual ITransHandler* HittedHandler(const std::string &hittedUrl,DWORD transCount) abstract;

private:
	static log4cplus::Logger log;
};

#endif